package git.soulbgm.service;

import git.soulbgm.common.pojo.PageInfo;
import git.soulbgm.pojo.dto.RoleDto;
import git.soulbgm.pojo.entity.Role;

import java.util.List;

/**
 * 角色相关业务逻辑接口
 *
 * @author SoulBGM
 * @date 2020-09-10 17:14:11
 */
public interface RoleService {

    /**
     * 分页查询角色信息
     *
     * @param pageNum  页码
     * @param pageSize 每页显示数
     * @param role     查询条件
     * @return 分页之后的查询信息
     */
    PageInfo find(Integer pageNum, Integer pageSize, RoleDto role);

    /**
     * 按角色ID查询角色信息
     *
     * @param id 角色ID
     * @return 角色信息
     */
    Role findById(Long id);

    /**
     * 按用户ID查询角色
     *
     * @param userId 用户ID
     * @return 角色ID列表
     */
    List<Long> findByRoleId(Long userId);

    /**
     * 添加用户与角色对应数据
     *
     * @param userId     用户ID
     * @param roleIdList 角色ID列表
     * @return 添加成功返回true否则返回false
     */
    Boolean addUserRole(Long userId, List<Long> roleIdList);

    /**
     * 添加角色信息
     *
     * @param role       角色信息
     * @param menuIdList 菜单ID列表
     * @return 添加之后的角色信息
     */
    Role add(Role role, List<Long> menuIdList);

    /**
     * 修改角色信息
     *
     * @param role 角色信息
     * @param menuIdList 菜单ID列表
     * @return 修改成功返回true否则返回false
     */
    Boolean update(Role role, List<Long> menuIdList);

    /**
     * 删除用户与角色对应数据
     *
     * @param userId 用户ID
     */
    void deleteUserRole(Long userId);

    /**
     * 按角色ID列表删除角色信息
     *
     * @param idList ID列表
     * @return 删除成功返回true否则返回false
     */
    Boolean delete(List idList);
}
